package main

import (
	"fmt"
	"sync"
	"time"
)

// 设计一个任务调度器，接收一组任务（可以用函数表示），
// 并使用协程并发执行这些任务，同时统计每个任务的执行时间。
func Scheduler(tasks []func()) {
	var wg sync.WaitGroup
	wg.Add(len(tasks))
	for k, task := range tasks {
		go func(i int, t func()) {
			defer wg.Done()
			start := time.Now()
			t()
			elapsed := time.Since(start).Seconds() // 耗时
			fmt.Printf("任务#%d 执行完毕，耗时 %.3f 秒\n", i+1, elapsed)
		}(k, task)
	}
	wg.Wait()
}

func main() {
	tasks := []func(){
		func() { fmt.Println("我是任务1") },
		func() { fmt.Println("我是任务2") },
		func() { fmt.Println("我是任务3") },
		func() { fmt.Println("我是任务4") },
		func() { fmt.Println("我是任务5") },
	}
	Scheduler(tasks)

}
